<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Title</title>
</head>
<body>
<script>!function (f, o, y) {
    var r, l = f.pagename || "", h = f.songlist || [], v = f.playindex || 0, j = h[v], c = f.channelIds,
        d = M.getParam("ADTAG") || "", a = M.getParam("sharefrom"), b = 0, x = 0,
        s = /Weibo\ \(*/i.test(navigator.userAgent), q = 0, w = parseInt(M.getParam("vipplus") || 0),
        L = 2 == $.cookie.get("login_type") && $.cookie.get("wxopenid"), m = M.user.isLogin(), T = function () {
            var n = {TXSPQQHFlag: -1}, e = null;

            function i(e) {
                M.buyVipPlus ? "function" == typeof e && e() : M.loadUrl("https://y.qq.com/music/h5/lib/js/module/buyVipPlus.js?max_age=604800", function (t) {
                    t && "error" == t.type ? i(e) : "function" == typeof e && e()
                })
            }

            return {
                dealwithVipplus: function (t) {
                    var a;
                    e = t, a = function (t) {
                        $(o).on("tap", ".js_openvipplus", function () {
                            i(function () {
                                M.buyVipPlus({
                                    service: "txsp",
                                    aid: "music.shipinvip.glym.dqbfh5." + ($.os.ios ? "ios" : "android")
                                })
                            })
                        }), t.TXSPQQHFlag ? console.log("none") : ($(".js_download").before('<a class="btn_download js_openvipplus" href="javascript:;">开通联合会员免费下载</a>'), $(".js_download").remove()), e && e.pay && e.pay.payplay && (t.TXSPQQHFlag ? console.log("none") : ($(".js_download_app").before('<a class="top_box__btn js_openvipplus" href="javascript:;">开通联合会员听完整版</a>'), $(".js_download_app").remove()))
                    }, n.TXSPQQHFlag = 0, M.ajax({
                        url: location.protocol + "//u.y.qq.com/cgi-bin/musicu.fcg",
                        dataType: "json",
                        postType: !0,
                        type: "post",
                        data: {vipplus: {module: "C4BQuery", method: "getC4BInfoByMusicid", param: {musicid: ""}}},
                        success: function (t) {
                            if (t && 0 == t.code && t.vipplus && 0 == t.vipplus.code && t.vipplus.data && t.vipplus.data.c4bInfoList)for (var e = 0, i = null; e < t.vipplus.data.c4bInfoList.length; e++)"TXSPQQH" == (i = t.vipplus.data.c4bInfoList[e]).serviceType && $.extend(n, {
                                TXSPQQHFlag: "Y" == i.state ? 1 : 0,
                                TXSPQQHStartTime: i.openTime,
                                TXSPQQHEndTime: i.closeTime
                            });
                            a && a(n)
                        },
                        error: function () {
                            a && a(n)
                        }
                    })
                }, loadBuyVipPlus: i, getVipplusStatus: function () {
                    return n.TXSPQQHFlag
                }
            }
        }(), k = {
            lrcList: [],
            elem: null,
            album: "",
            artist: "",
            songTitle: "",
            byBody: "",
            offset: "",
            maxLineIndex: 0,
            cLine: null,
            scrollDiv: null,
            isTimeLrc: !1,
            offsetMap: {},
            lyric_txtHalfHeight: 0,
            scrollInited: 0,
            iscrollUrl: "//y.gtimg.cn/music/h5/recent_listen/iscroll_60b12e9.js?max_age=31565000",
            lrcmap: {},
            parseLyricData: function (t) {
                var i = this;
                i.lrcList = [];
                var e, a, n, s = "", o = 0;
                for (e = (t = t || "").replace(new RegExp("\\n", "g"), "_!!_").trim().split("_!!_"), i.isTimeLrc = !1, a = e.length; o < a; o++) {
                    var r = (n = e[o]).lastIndexOf("]"), l = n.substring(0, r + 1), c = n.substring(r + 1),
                        d = l.replace(new RegExp("\\[", "g"), "").split("]"), m = d.length - 1, p = "", u = 0;
                    if (0 < m)for (i.isTimeLrc = !0; m--;)if (-1 != (p = d[m]).indexOf("al:")) u = p.indexOf(":"), i.album = p.substring(u + 1); else if (-1 != p.indexOf("ar:")) u = p.indexOf(":"), i.artist = p.substring(u + 1); else if (-1 != p.indexOf("ti:")) u = p.indexOf(":"), i.songTitle = p.substring(u + 1); else if (-1 != p.indexOf("by:")) u = p.indexOf(":"), i.byBody = p.substring(u + 1); else if (-1 != p.indexOf("offset:")) u = p.indexOf(":"), i.offset = p.substring(u + 1); else {
                        p = -1 != p.indexOf(".") ? p : p + ".00", c = c.trim();
                        var g = parseInt(i.playTime2ms(p) - i.offset, 10);
                        p = i.ms2playTime(g), c && (i.lrcList.push({time: p, context: c}), s = p)
                    } else i.lrcList.push({time: s || "00:00.00", context: c})
                }
                i.isTimeLrc && i.lrcList.sort(function (t, e) {
                    return i.compare(t.time, e.time) ? -1 : 1
                }), i.maxLineIndex = i.lrcList.length
            },
            playTime2ms: function (t) {
                return 60 * parseInt(t.substring(0, t.indexOf(":")), 10) * 1e3 + 1e3 * parseInt(t.substring(t.indexOf(":") + 1, t.indexOf(".")), 10) + parseInt(t.substring(t.indexOf(".") + 1), 10)
            },
            ms2playTime: function (t) {
                var e = parseInt(t / 6e4, 10), i = parseInt(t / 1e3 % 60, 10), a = t - 6e4 * e - 1e3 * i;
                return (9 < e ? "" : "0") + e + ":" + (9 < i ? "" : "0") + i + "." + (9 < a ? "" : "0") + a
            },
            compare: function (t, e, i) {
                var a = this;
                return "<" == (i = i || "<=") ? a.playTime2ms(t) < a.playTime2ms(e) : "<=" == i ? a.playTime2ms(t) <= a.playTime2ms(e) : ">" == i ? a.playTime2ms(t) > a.playTime2ms(e) : ">=" == i ? a.playTime2ms(t) >= a.playTime2ms(e) : void 0
            },
            getLrc: function (t, e, i) {
                var a = this;
                if (a.elem && a.elem.length) {
                    a.elem.empty();
                    var n = (e = e || 0) + "_" + t, s = function (t) {
                        var e;
                        t && 0 == t.retcode && 3 != t.type && (a.parseLyricData(M.decodeHTML(t.lyric)), e = a.makeLrcHtml()), e ? (a.elem.html(e), M.scrollLrc && M.scrollLrc.refresh()) : a.elem.html('<p class="lyric__para">该歌曲暂无歌词</p>'), a.lyric_txtHalfHeight = $("#lyric_txt").height() / 2, M.isFunction(i) && i(!!e)
                    }, o = a.lrcmap[n];
                    o ? s(o) : M.ajax({
                        url: "//c.y.qq.com/lyric/fcgi-bin/fcg_query_lyric.fcg",
                        data: {nobase64: 1, musicid: t, songtype: e || 0},
                        dataType: "jsonp",
                        success: function (t) {
                            a.lrcmap[n] = t, s(t)
                        },
                        error: function () {
                            a.elem.html('<p class="lyric__para">获取歌词失败,请稍候重试</p>')
                        }
                    })
                }
            },
            showCurrentLrcLine: function (t) {
                var e = this;
                if (e.isTimeLrc) {
                    t = parseInt(t);
                    var i, a = e.lrcList.length;
                    for (i = 0; i < a; i++) {
                        if (t < parseInt(e.playTime2ms(e.lrcList[i].time) / 1e3))break
                    }
                    var n = o.getElementById("line_" + (i - 1));
                    n && e.cLine != n && (e.cLine && (e.cLine.className = "lyric__para"), n.className = "lyric__para current", e.cLine = n), e.scrollLrcLine(i)
                }
            },
            currentLine: null,
            checkY: function (t) {
                if (!this.elem)return !1;
                var e = parseInt(this.elem.parent().height()) - parseInt(this.elem.height());
                return t < e && (t = e), 0 < t && (t = 0), t
            },
            scrollLrcLine: function (t) {
                var e = this;
                if (null !== e.currentLine && t == e.currentLine)return !1;
                e.currentLine = t, (t = parseInt(t)) < 0 && (t = 0);
                var i = 0;
                parseInt(e.elem[0].style.webkitTransform.split(",")[1]);
                if (e.currentLine in e.offsetMap) i = e.offsetMap[e.currentLine]; else {
                    var a = 0 == e.currentLine ? e.elem.find("p").eq(0) : e.elem.find("p").eq(e.currentLine - 1);
                    if (a.length) {
                        var n = a.offset(), s = -(n.top - a.parent().offset().top - e.lyric_txtHalfHeight + n.height / 2);
                        i = e.offsetMap[e.currentLine] = s
                    }
                }
                i = e.checkY(i), M.scrollLrc && !M.scrollLrc.lock && e.elem && e.elem[0] && (e.elem[0].style.webkitTransition = "-webkit-transform 0.3s ease-out", e.elem[0].style.webkitTransform = "translate3d(0px," + i + "px,0px)")
            },
            makeLrcHtml: function () {
                var t = this.lrcList;
                if (t) {
                    var e = t.length, i = 0, a = [];
                    for (this.isTimeLrc || a.push('<p class="lyric__para">抱歉，该歌词暂不支持自动滚动</p><p class="lyric__para">------------------------------------------</p>'); i < e; i++) {
                        var n = Math.floor(($(f).width() - 20) / 16), s = t[i].context;
                        s.length > n ? a.push('<p class="lyric__para" id="line_' + i + '" style="height:auto;white-space:normal;padding:9px 0;line-height:1.5;">' + s + "</p>") : a.push('<p class="lyric__para" id="line_' + i + '">' + s + "</p>")
                    }
                    return a.join("")
                }
                return ""
            },
            init: function (t, e, i) {
                var a = this;
                a.elem = $(".js_lrc_list"), a.elem.html('<p class="lyric__para" style="opacity:.5">歌词加载中...</p>'), a.getLrc(t, e, function (t) {
                    M.isFunction(i) && i(t), f.iScroll || (SPD.mark(37), M.loadUrl(a.iscrollUrl))
                })
            },
            initScroll: function () {
                var t = this;
                t.scrollInited || M.loadUrl(t.iscrollUrl, function () {
                    f.iScroll && (t.scrollInited = 1, M.scrollLrc = new iScroll("lyric_txt", {hScroll: !1}), t.elem.on("touchstart", function () {
                        M.scrollLrc && (M.scrollLrc.lockTimer && clearTimeout(M.scrollLrc.lockTimer), M.scrollLrc.lock = !0)
                    }).on("touchend", function () {
                        M.scrollLrc && (M.scrollLrc.lockTimer = setTimeout(function () {
                            M.scrollLrc.lock = !1
                        }, 1e3))
                    }))
                })
            }
        }, C = (r = [], {
            reset: function () {
                r.length = 0
            }, init: function () {
                this.reset(), $(".js_expose").each(function () {
                    var t = $(this), e = t.attr("data-expose");
                    if (e) {
                        var i = t.offset();
                        r.push({tag: e, top: i.top, bottom: i.top + i.height, $o: t})
                    }
                }), $(f).on("scroll", function (t) {
                    if (r.length)for (var e = o.documentElement.scrollTop + o.body.scrollTop, i = e + f.innerHeight, a = 0, n = r.length; a < n;) {
                        var s = r[a];
                        e <= s.top && i >= s.top || e <= s.bottom && i >= s.bottom ? (s.$o.removeClass("js_expose"), S(s.tag), r.splice(a, 1), n--) : a++
                    }
                })
            }
        }), t = "/i/song.html_" + l + "_" + ($.os.ios ? "ios" : "android");
    d && (t += "_" + d), f.tj_param = {virtualDomain: "y.qq.com", virtualURL: t};
    var i, n, I = {
        map: {}, update: function (t) {
            $(".js_like").attr("data-liked", t ? 1 : 0).find("use").attr("xlink:href", "#icon_like" + (t ? "d" : ""))
        }, get: function (e, t, i) {
            var a = this.map, n = t + "_" + e;
            null != a[n] ? i && i(a[n]) : M.ajax({
                url: "//c.y.qq.com/splcloud/fcgi-bin/fcg_musiclist_getmyfav.fcg",
                dataType: "jsonp",
                cache: !1,
                data: {songid: e, songtype: 0 == t ? 13 : t},
                success: function (t) {
                    a[n] = t && t.map && 1 == t.map[e], i && i(a[n])
                }
            })
        }
    }, p = (n = [], M.checkInstall(function (t) {
        i = 1 == t;
        var e = n;
        n = null, e.forEach(function (t) {
            t(i)
        })
    }), function (t) {
        M.isFunction(t) && (n ? n.push(t) : t(i))
    }), P = function () {
        var l = {};

        function i(r) {
            var t;
            t = function () {
                if (f.CMT) {
                    var o = $(".js_cmt_wrap");
                    new CMT(".js_cmt_wrap", {
                        params: {cmd: 8, biztype: 1, topid: r.songid, pagesize: 3},
                        skinCssStyle: "black",
                        customDisplayedCmtOrder: "altercmt",
                        customAlterCmtConfig: {shownum: 3},
                        customHotCmtConfig: {},
                        hideTitleBar: !0,
                        allowScrollLoading: !1,
                        showSendInput: !1,
                        showEmptyIcon: !1,
                        showEndTail: !1,
                        channelId: c.def
                    }).init().showPage(0, function (t, e) {
                        var i, a = 0, n = e && e.comment || {}, s = e && e.hot_comment || {};
                        0 < s.commenttotal && s.commentlist && 0 < s.commentlist.length ? (a = 1, i = "精彩评论") : 0 < n.commenttotal && n.commentlist && 0 < n.commentlist.length && (a = 1, i = "最新评论"), $(".js_cmt").toggle(!!a), a && ($(".js_cmt_title").text(i), $(".js_cmt_footer").addClass("js_expose").attr({"data-expose": "comment_more"}), C.init()), o.find("img[data-src]").each(function (t, e) {
                            var i = $(e), a = i.attr("data-src");
                            a && i.attr("src", a).removeAttr("data-src")
                        }), l[r.songid] = {title: i, html: a ? o.html() : ""}
                    });
                    o.off("tap click")
                }
            }, f.CMT ? t && t() : M.loadUrl("//y.gtimg.cn/music/activity/lib/comment_v3.js?max_age=604800", t)
        }

        return function (t) {
            if (t && 0 != t.type && 0 < t.songid)return $(".js_cmt").hide();
            var e = l[t.songid];
            e ? (e.html && ($(".js_cmt_title").text(e.title), $(".js_cmt_wrap").html(e.html)), $(".js_cmt").toggle(!!e.html)) : i(t)
        }
    }(), u = {
        area: null, _areaCb: [], getAreaInfo: function (t) {
            var e = this;
            e.area ? t && t(e.area.cityname) : (e._areaCb.push(t), 1 == e._areaCb.length && M.ajax({
                url: "//c.y.qq.com/splcloud/fcgi-bin/fcg_discern_isp.fcg",
                dataType: "jsonp",
                jsonpCallback: "MusicJsonCallback",
                success: function (t) {
                    u.area = {}, 0 == t.code && (u.area.cityname = decodeURIComponent(t.cityname || "").replace(/市$/, ""))
                },
                error: function () {
                    u.area = {}
                },
                complete: function () {
                    e._areaCb.forEach(function (t) {
                        t && t(e.area.cityname)
                    })
                }
            }))
        }, parse: function (s, o, r) {
            var l = this, c = {}, d = 1 == M.getParam("dialog_show");
            if (M.isArray(s)) {
                var m = +new Date, p = function (t, e) {
                    f.sessionStorage && 1 == sessionStorage["playsong_plugin_exec_" + e.id] || (c[t] = e)
                }, u = function (e) {
                    if (e >= s.length)return r(c);
                    var i = s[e];
                    e++;
                    var t = i.end_time >= m && i.start_time <= m;
                    if (!t)return u(e);
                    if (!(t = d || 0 == i.user_type || 1 == i.user_type && o || 2 == i.user_type && !o))return u(e);
                    if (!(t = d || 0 == i.os || 1 == i.os && $.os.android || 2 == i.os && $.os.ios))return u(e);
                    if (!(t = d || 0 == i.platform || 1 == i.platform && $.browser.weixin || 2 == i.platform && $.browser.mqq || 3 == i.platform && $.browser.other))return u(e);
                    $.browser.weixin ? i.cid = i.cid_weixin : $.browser.mqq ? i.cid = i.cid_mqq : i.cid = i.cid_other;
                    var a = i.type;
                    if (c[a]) u(e); else {
                        if (0 == i.act_type && "" == i.act_url) i.act_url = j.songmid; else if (!i.act_url || 0 == i.act_url)return u(e);
                        var n;
                        i.ftarget = 1 == i.target ? "web" : "music", i.city && (n = ("" + i.city).split(/[, ]/)), !d && n && n.length ? l.getAreaInfo(function (t) {
                            t && -1 != n.indexOf(t) || p(a, i), u(e)
                        }) : (p(a, i), u(e))
                    }
                };
                u(0)
            }
            return c
        }, show: function (t) {
            var e, o = ["song", "gedan", "album", "singer", "toplist", "link"], i = function (t, e) {
                var i = t.find(".js_img").attr("src", M.fixUrl(e.img));
                t.find(".js_title").text(e.title || ""), t.find(".js_desc").text(e.desc || "");
                var a = t.find(".js_btn").text(e.btn || "");
                if (1 == e.type) {
                    var n = t.find(".js_close").addClass("js_tj").attr("data-tj", "plugin_close_$qm." + e.id);
                    1 == e.close_btn_color && n.addClass("black"), a = i
                }
                var s = o[e.act_type];
                a.addClass("js_tj js_" + s).attr({
                    "data-tj": "plugin_click_$qm." + e.id,
                    "data-id": e.act_url,
                    "data-target": e.ftarget,
                    "data-cid": e.cid || c.pg
                })
            }, a = function (e, i) {
                var a = i.type;
                setTimeout(function () {
                    if (4 != a && 5 != a)try {
                        sessionStorage.setItem("playsong_plugin_exec_" + i.id, 1)
                    } catch (t) {
                    }
                    if (6 == a) _(o[i.act_type], i.act_url, i.ftarget, i.cid || c.pg); else if (2 == a || 3 == a) {
                        i.img = M.fixUrl(i.img);
                        var t = {center: 1};
                        3 == a ? (t.img = i.img, t.title = i.title || "", t.message = i.desc || "", t.btn = ["取消", "确认"]) : (t.btn = {img: i.img}, t.close = !0), t.cb = function (t) {
                            2 == a && 0 == t || 3 == a && 1 == t ? (S("plugin_click_$qm." + i.id), _(o[i.act_type], i.act_url, i.ftarget, i.cid || c.pg)) : S("plugin_close_$qm." + i.id)
                        }, M.dialog.show(t)
                    } else 4 != a && 5 != a || $(".js_topbar").hide(), e.show();
                    S("plugin_show_$qm." + i.id)
                }, 0 < i.delay_time ? 1e3 * i.delay_time : 0)
            };
            t[6] && a(e, t[6]), t[1] ? (i(e = $(".js_pg_super"), t[1]), a(e, t[1])) : t[2] ? a(e, t[2]) : t[3] && a(e, t[3]), t[4] ? (i(e = $(".js_pg_content"), t[4]), a(e, t[4])) : t[5] && (i(e = $(".js_pg_bubble"), t[5]), a(e, t[5]))
        }, init: function () {
            if (!f.noPlugin) {
                f.pluginCallback = function (e) {
                    p(function (t) {
                        u.parse(e && e.data, t, function (t) {
                            u.show(t)
                        })
                    })
                };
                var t = "//" + (1 == M.getParam("_testPlugin") ? "ct.y.qq.com/" : "") + "y.qq.com/m/act/playsong/plugin_new.js?max_age=604800&v=" + parseInt(new Date / 6e5);
                M.loadUrl(t), this.getAreaInfo()
            }
        }
    };

    function S(e) {
        if (e) {
            e = ("" + e).replace(/\$os/g, $.os.ios ? "ios" : "android");
            var i = function () {
                e = /^\^/.test(e) ? e.substr(1) : "playsong_" + l + "." + e, M.tj.sendClick(e)
            };
            -1 != e.indexOf("$qm") ? p(function (t) {
                e = ("" + e).replace("$qm", t ? "dau" : "new"), i()
            }) : i()
        }
    }

    function g(t, e, i, a) {
        if (s) {
            var n = $(".js_browser_open_img");
            n.attr("src", n.attr("data-src")), $(".js_browser_open").show()
        } else t || (t = "media", e = "playSonglist", i = {
            song: [{type: j.type, songid: j.songid}],
            action: "play"
        }), $.browser.weixin || $.browser.mqq || y.done("pause"), M.client.open(t, e, i, null, a || c.def)
    }

    function _(t, e, i, a) {
        if (e && /^(song|singer|album|gedan|toplist|link)$/.test(t))if (f.miniMode || !$.browser.music && "web" === i) {
            var n;
            switch (t) {
                case"song":
                    n = "https://i.y.qq.com/v8/playsong.html?", n += 0 < e ? "songid=" + e : "songmid=" + e;
                    break;
                case"album":
                    n = "https://y.qq.com/w/album.html?albumId=" + e;
                    break;
                case"singer":
                    n = "https://y.qq.com/w/singer.html?singerId=" + e;
                    break;
                case"gedan":
                    n = "https://y.qq.com/w/taoge.html?id=" + e;
                    break;
                case"toplist":
                    n = "https://y.qq.com/w/toplist.html?id=" + e;
                    break;
                case"link":
                    n = e
            }
            n && setTimeout(function () {
                location.href = n
            }, 50)
        } else if ("song" == t) {
            var s = {song: [], action: "play"};
            0 < e ? s.song.push({type: 0, songid: e}) : s.song.push({
                type: 0,
                songmid: e
            }), g("media", "playSonglist", s, a)
        } else"link" == t ? g("ui", "openUrl", {url: e}, a) : g("ui", t, {id: e}, a)
    }

    function A(t) {
        var e = (t = t || j) && (t.action && t.action.play || m && t.tryPlay);
        if (M.player.playBlock && !e) M.player.playBlock(t, {
            success: function () {
                location.reload()
            }
        }); else {
            if (t.m4aUrl)return !0;
            M.alert({message: "该歌曲暂不支持播放", center: 1})
        }
    }

    function H(t) {
        var e = $(".js_cover"), i = $(".js_lrc");
        t = null == t ? i.hasClass("fade_out") : !!t, e.toggleClass("fade_out", t).toggleClass("fade_in", !t), i.toggleClass("fade_out", !t).toggleClass("fade_in", t), t && (setTimeout(function () {
            k.initScroll()
        }), b = 0)
    }

    f.tj = S;
    var Q, U, E, O, D, R,
        B = (U = $(".js_show_list"), E = $(".js_playlist"), O = E.find("ul"), D = E.find(".js_playlist_count"), R = [], {
            render: function (t, e, i) {
                var a = 1 < (t = M.isArray(t) ? t : []).length;
                if (U.toggle(a), E.toggle(a), a && (R.length != t.length && (D.text("(" + h.length + "首)"), $(".js_show_list,.js_playlist").toggle(a)), t.forEach(function (t, e) {
                        var i = R[e];
                        if (i) t.songid == i.songid && t.type == i.type || (i.$dom.find(".play_list__song").text(t.songname), i.$dom.find(".play_list__singer").text(t.singername)); else {
                            var a = $('<li class="play_list__item js_list_item js_tj" data-tj="playlist_item" data-index="' + e + '"><span class="play_list__song">' + M.encodeHTML(t.songname) + '</span><b class="play_list__line">-</b><span class="play_list__singer">' + M.encodeHTML(t.singername) + '</span><span class="ani_playing"><b><i></i><i></i><i></i><i></i></b></span></li>');
                            O.append(a), R[e] = {type: t.type, songid: t.songid, $dom: a}
                        }
                    }), R.length > t.length)) {
                    for (var n = t.length; n < R.length; n++)R[n].$dom.remove();
                    R.length = t.length
                }
                this.update(e, i)
            }, update: function (t, e) {
                null != e && (Q = e);
                var i = R[t], a = i && i.$dom;
                a && (O.find(".current").removeClass("current"), O.find(".playing").removeClass("playing"), a.addClass("current"), a.toggleClass("playing", !!Q))
            }, toggle: function (t) {
                E.toggleClass("actionsheet--up", null == t ? void 0 : !!t)
            }
        }), F = function () {
            var t, i = f.ctrlAssist, e = !0, a = $(".js_play").find("use"), n = {};

            function s(t) {
                a.attr("xlink:href", "#icon_" + (t ? "pause" : "play") + "_s"), B.update(v, t)
            }

            function o(t) {
                if (i) {
                    var e = "qmplay://qq.com?type=play&" + $.param(t);
                    M.openScheme(e)
                }
                if ("other" === l && "duya" === d) {
                    location.href = "flow://?type=play&status=finish"
                }
            }

            return i && (f.QMPLAY = y, j && j.pay && j.pay.payplay && o({
                status: "error",
                error: "应版权方要求，该数字专辑单独付费后即可畅享！"
            })), function () {
                y.done("init", {
                    list: h, index: v, canPlayCheck: A, ready: function (t) {
                        if (t) {
                            var e = t.index, i = t.list || [], a = i[e] || {};
                            if (a != j && (h = i, z(e)), !(a.action && a.action.play || m && a.tryPlay))return y.done("pause"), s(!1), !1
                        }
                    }, play: function (t) {
                        y.status = "play", s(!0), e && (e = !1, SPD.mark(38), x && H(!0))
                    }, playing: function () {
                        y.status = "play", clearTimeout(t), function (i) {
                            if (i && !n[i.songid]) {
                                var e = m && M.user.getUin(), a = function (t) {
                                    n[i.songid] = 1;
                                    var e = new Image;
                                    e.onload = e.onerror = e.onabort = function () {
                                        e = null
                                    }, e.src = "//stat.y.qq.com/pc/fcgi-bin/fcg_h5_listen.fcg?" + $.param({
                                            optime: (new Date).getTime(),
                                            qq: t.uin,
                                            songid: i.songid,
                                            int1: i.type || 0,
                                            from: l + "_songplay",
                                            g_tk: M.getACSRFToken()
                                        })
                                };
                                1e4 < e ? a({uin: e}) : M.user.getUserInfo(function (t) {
                                    1e4 < (e = 0 == t.code && t.data.uin) && a({uin: e})
                                })
                            }
                        }(j), o({
                            status: "playing",
                            singername: j.singername,
                            songname: j.songname,
                            albumname: j.albumname,
                            cover: M.fixUrl(j.pic)
                        })
                    }, pause: function () {
                        s(!(y.status = "pause")), o({status: "pause"})
                    }, ended: function () {
                        s(!(y.status = "ended")), o({status: "ended"})
                    }, timeupdate: function (t) {
                        (!j.action || !j.action.play) && j.tryPlay && j.preview && 0 < j.preview.trybegin && (t += j.preview.trybegin / 1e3), k.showCurrentLrcLine(t)
                    }
                }), A() ? (0 < t && clearTimeout(t), t = setTimeout(function () {
                    M.reportCode({platform: "music_h5", type: 1, code: 0, time: 0, cgi: "not_played_over_15s_in_" + l})
                }, 15e3), y.done("play")) : s(!1)
            }
        }();

    function X(t) {
        M.isArray(t) || (t = [t]);
        var s = "";
        return t.forEach(function (t) {
            if (t) {
                var e = ' data-id="' + t.id + '"' + (t.mid ? ' data-mid="' + t.mid + '"' : "") + (t.type ? ' data-type="' + t.type + '"' : "") + (t.tj ? ' data-tj="' + t.tj + '"' : "") + (t.expose ? ' data-expose="' + t.expose + '"' : ""),
                    i = M.fixUrl(t.img || t.imgDef), a = M.encodeHTML(t.title || ""), n = M.encodeHTML(t.desc || "");
                s += '<li class="qui_list__item js_tj ' + t.act + '"' + e + ">" + (t.href ? '<a href="' + t.href + '" style="display:none">' + a + "</a>" : "") + (i ? '<div class="qui_list__media"><img class="qui_list__img" src="' + i + '"' + (t.imgDef ? ' data-imgerr-def="' + t.imgDef + '"' : "") + "></div>" : "") + '<div class="qui_list__bd"><div class="qui_list__box"><h3 class="qui_list__tit"><span class="qui_list__txt">' + a + "</span></h3>" + (n ? '<p class="qui_list__desc"><span class="qui_list__txt">' + n + "</span></p>" : "") + '</div><i class="qui_list__arrow"></i></div></li>'
            }
        }), s
    }

    var V, Y = (V = {}, function (t, e, i) {
        t = parseInt(t);
        var a = (e = 1 == e ? 0 : 0 == e ? 1 : parseInt(e || 1)) + "_" + t;
        if (0 < t && V[a])return i(V[a]);
        M.ajax({
            type: "post",
            postType: !0,
            url: "//u.y.qq.com/cgi-bin/musicu.fcg",
            data: {
                detail: {module: "music.pf_song_detail_svr", method: "get_song_detail", param: {song_id: t}},
                simsongs: {module: "rcmusic.similarSongRadioServer", method: "get_simsongs", param: {songid: t}},
                gedan: {
                    module: "music.mb_gedan_recommend_svr",
                    method: "get_related_gedan",
                    param: {sin: 0, last_id: 0, song_type: e, song_id: t}
                }
            },
            dataType: "json",
            success: function (t) {
                V[a] = function (t) {
                    if (t && 0 == t.code) {
                        var a = {};
                        return t.detail && 0 == t.detail.code && t.detail.data && M.isArray(t.detail.data.info) && (a.article = [], t.detail.data.info.forEach(function (t) {
                            if (t && ("MP_ARTICLE" === t.type || "JUMP_TO_ARTICLE" === t.type) && M.isArray(t.content)) {
                                var i = "MP_ARTICLE" === t.type;
                                t.content.forEach(function (t) {
                                    var e;
                                    i ? (e = t.jumpurl) && (e = M.addParam({scene: 111}, e)) : e = "//c.y.qq.com/node/m/client/music_headline/index.html?_hidehd=1&_button=2&zid=" + t.id, e && a.article.push({
                                        tj: "article_click_$qm",
                                        act: "js_link",
                                        id: e,
                                        img: t.picurl,
                                        title: t.value,
                                        href: e
                                    })
                                })
                            }
                        })), t.simsongs && 0 == t.simsongs.code && t.simsongs.data && M.isArray(t.simsongs.data.songInfoList) && (a.simsongs = t.simsongs.data.songInfoList.map(function (t, e) {
                            return {
                                tj: "similarsong_click_$qm",
                                act: "js_song",
                                id: t.mid,
                                img: M.getPic("album", t.album.mid, 150),
                                title: t.title,
                                desc: t.singer && t.singer[0] && t.singer[0].title || "",
                                href: "https://i.y.qq.com/v8/playsong.html?songmid=" + t.mid
                            }
                        })), t.gedan && 0 == t.gedan.code && t.gedan.data && M.isArray(t.gedan.data.vec_gedan) && (a.gedan = t.gedan.data.vec_gedan.map(function (t, e) {
                            return {
                                tj: "songsheet_click_$qm",
                                act: "js_gedan",
                                id: t.tid,
                                img: t.imgurl,
                                title: t.dissname,
                                desc: t.creator,
                                href: "https://y.qq.com/n/yqq/playsquare/3732331276" + t.tid + ".html"
                            }
                        })), a
                    }
                }(t)
            },
            complete: function () {
                i(V[a])
            }
        })
    });

    function z(t, e) {
        var i = h[t];
        i && (v = t, j = M.formatMusic(i)), b = 1;
        var a = j.songid, n = j.type, s = j.songname, o = j.singername, r = j.albumid;
        if (!e) {
            var l = $(".js_song_name"), c = $(".js_singer_name");
            c.hasClass("js_singer") ? (l.text(s), c.text(o)) : l.text(s + " - " + o), $(".js_album_cover").attr("src", j.pic)
        }
        var d = $(".js_lrc_more"), m = j.language, p = 5 == m || 3 == m || 4 == m;
        if (k.init(a, n, function (t) {
                var e = $(".lyric__para").length;
                d.toggle(5 <= e), $(".js_lrc_bd").toggleClass("align_center", e < 5), (x = t && 1 < e) && b && "play" === y.status && H(!0), t && S("lyric" + (p ? "_translate" : "") + "_more")
            }), d.text("查看" + (p ? "翻译" : "完整") + "歌词").attr("data-tj", "lyric" + (p ? "_translate" : "") + "_more_$qm"), !f.miniMode) {
            I.get(a, n, I.update), P(i);
            var u = "";
            if ((M.isArray(j.singer) ? j.singer : [{
                    name: j.singername,
                    id: j.singerid,
                    mid: j.singermid
                }]).forEach(function (t) {
                    t.name && (u += X({
                        tj: "singer_click_$qm",
                        act: "js_singer js_expose",
                        expose: "singer",
                        id: t.id,
                        img: M.getPic("singer", t.mid || t.id, 150),
                        imgDef: "//y.gtimg.cn/mediastyle/global/img/person_120.png?max_age=2592000",
                        title: "歌手 " + t.name,
                        href: "https://y.qq.com/n/yqq/singer/" + t.mid + ".html"
                    }))
                }), 0 < r && 8623 != r && j.albumname && (u += X({
                    tj: "album_click_$qm",
                    act: "js_album js_expose",
                    expose: "album",
                    id: r,
                    img: M.getPic("album", j.albummid, 300),
                    imgDef: "//y.gtimg.cn/mediastyle/global/img/album_120.png?max_age=2592000",
                    title: "专辑 " + j.albumname,
                    href: "https://y.qq.com/n/yqq/album/" + j.albummid + ".html"
                })), $(".js_singeralbum").toggle(!!u).find("ul").html(u), Y(a, n, function (t) {
                    a == j.songid && ([[(t = t || {}).simsongs, "similarsong"], [t.gedan, "songsheet"], [t.article, "article"]].forEach(function (t) {
                        var e = "";
                        t[0] && 1 < t[0].length && (e = X(t[0].slice(0, 3), t[2]));
                        var i = $(".js_" + t[1]);
                        e ? (i.find("ul").html(e), i.addClass("js_expose").attr("data-expose", t[1]).show()) : i.hide()
                    }), C.init())
                }), $(".js_download").html((j.pay && j.pay.paydownload ? "" : "免费") + "下载歌曲"), $mv = $(".js_mv"), j.vid ? (S("with_mv"), $mv.attr("data-vid", j.vid).show()) : $mv.hide(), M.user.isLogin() && !L && 1 <= w && w <= 3 && j && j.pay && j.pay.payplay) console.log(11); else if (q) {
                j.action && !j.action.play && j.tryPlay && (f.M && M.player.playBlock(j), f.tj && S("tryplay_block"));
                var g = !j.action.play && j.tryPlay;
                $(".js_topbar .js_download_app").toggle(!g);
                var _ = $(".js_topbar .js_top_vip");
                _.toggle(!!g), g && (_.attr("data-id", "https://y.qq.com/m/myservice/index.html?entry=3&tab1=eight&tab2=svip&hideyb=1&songid=" + j.songid + "&aid=music.danqubofang.20860." + ($.os.ios ? "ios" : "android") + "$songid" + j.songid + "&showid=20860&clickid=20860&hidezs=1"), S("^music.20860.btnshow"))
            }
            j && j && j.pay && (j.pay.payplay || j.pay.paydownload) && M.user.isLogin() && !L && 1 <= w && w <= 3 && T.dealwithVipplus(j)
        }
        F(), B.render(h, v), M.share.init({
            img: M.getPic("album", j.albummid, 150),
            link: location.protocol + "//i.y.qq.com/v8/playsong.html?songmid=" + j.songmid + "&songtype=" + (0 != n ? n : 0) + "&songid=" + a + "#wechat_redirect",
            desc: M.decodeHTML(o),
            title: M.decodeHTML(s) + " - " + M.decodeHTML(o) + " - QQ音乐"
        })
    }

    function e(t) {
        if (!M.isArray(h) || !h.length)return M.dialog.show({
            center: 1,
            title: "参数错误",
            message: "未找到有效的歌曲数据",
            btn: ["前往QQ音乐首页"],
            cb: function () {
                location.replace("https://y.qq.com/m/index.html?ADTAG=playsong.no_data")
            }
        });
        for (var e = 0; e < h.length; e++) {
            var i = h[e];
            if (i && i.tryPlay) {
                q = 1;
                break
            }
        }
        !function () {
            var t, e;
            if (a) {
                t = M.getParam("from_id");
                try {
                    e = decodeURIComponent(atob(decodeURIComponent(M.getParam("from_name"))))
                } catch (t) {
                }
            }
            if (e && t) {
                var i = "";
                switch (a) {
                    case"toplist":
                        e = "来自" + e, i = "js_toplist";
                        break;
                    case"radio":
                        e = "来自电台：" + e, i = "js_radio";
                        break;
                    case"gedan":
                        e = "来自歌单：" + e, i = "js_gedan"
                }
                i && ($(".js_song_name").text(j.songname + " - " + j.singername), $(".js_singer_name").removeClass("js_singer").addClass(i).html(e).attr("data-id", t))
            } else $(".js_singer_name").removeClass("js_toplist js_radio js_gedan").addClass("js_singer");
            a = null
        }(), z(v, !t), $(o).on("tap", ".js_stop_propagation", function (t) {
            t.stopImmediatePropagation()
        }).on("tap", ".js_hide_self", function () {
            $(this).hide()
        }).on("tap", ".js_tj", function () {
            S($(this).attr("data-tj"))
        }).on("tap", ".js_play", function () {
            y.done("toggle")
        }).on("tap", ".js_download", function () {
            s ? g() : M.player.play(j.songid, {
                action: "play",
                type: j.type || 0,
                target: "music",
                download: 1,
                channelId: c.down
            })
        }).on("tap", ".js_openmusic", function (t) {
            g(null, null, null, $(this).attr("data-cid")), t.stopImmediatePropagation()
        }).on("tap", ".js_link", function () {
            var t = $(this);
            _("link", t.attr("data-id"), t.attr("data-target") || "web", t.attr("data-cid"))
        }).on("tap", ".js_mv", function () {
            var t = $(this), e = t.attr("data-vid");
            e && g("media", "playMV", {vid: e}, t.attr("data-cid") || c.mv)
        }).on("tap", ".js_song", function () {
            var t = $(this), e = t.attr("data-id");
            e && _("song", e, t.attr("data-target"), t.attr("data-cid") || c.song)
        }).on("tap", ".js_singer", function () {
            var t = $(this), e = t.attr("data-id");
            e || (e = j.singer && j.singer[0] && j.singer[0].id), e && _("singer", e, t.attr("data-target"), t.attr("data-cid") || c.singer)
        }).on("tap", ".js_album", function () {
            var t = $(this), e = t.attr("data-id");
            e && _("album", e, t.attr("data-target"), t.attr("data-cid") || c.album)
        }).on("tap", ".js_toplist", function () {
            var t = $(this), e = t.attr("data-id");
            e && _("toplist", e, t.attr("data-target"), t.attr("data-cid"))
        }).on("tap", ".js_gedan", function () {
            var t = $(this), e = t.attr("data-id");
            e && _("gedan", e, t.attr("data-target"), t.attr("data-cid") || c.gedan)
        }).on("tap", ".js_radio", function () {
            var t = $(this).attr("data-id");
            t && g("media", "playRadio", {radioId: t, action: "play"})
        }).on("tap", ".js_toggle_cover", function () {
            H()
        }).on("tap", ".js_show_list", function () {
            B.toggle(!0)
        }).on("tap", ".js_list_item", function () {
            var t = $(this);
            if (!t.hasClass("current")) {
                var e = t.attr("data-index");
                h[e] && z(e)
            }
        }).on("tap", ".js_playlist_close", function () {
            B.toggle(!1)
        }).on("tap", ".js_cmt_openprofile", function () {
            var t = $(this).attr("data-uin");
            t && g("ui", "profile", {uin: t})
        }).on("tap", ".js_cmt_footer,.js_cmt_praise", function () {
            var t;
            /js_cmt_footer/.test(this.className) ? (t = c.cmt_more, S("comment_more_$qm")) : (t = c.cmt_praise, S("comment_praise_$qm")), g("ui", "openUrl", {url: location.protocol + "//c.y.qq.com/node/m/client/cmt_list/index.html?type=1&id=" + j.songid}, t)
        }).on("tap", ".js_pg_super .js_close", function () {
            $(this).parents(".js_pg_super").hide()
        }), u.init(), $(".js_download_app").length && (p(function (t) {
            $(".js_download_app").text(t ? "QQ音乐打开" : "下载APP")
        }), S("top_$qmpers")), 1 == M.getParam("prevent") && M.tips("已过滤无法播放歌曲"), $.browser.weixin && $.os.android && setTimeout(function () {
            p(function (t) {
                var a = [];
                a.push((t ? "i" : "u") + "qm");
                [["kg", "com.kugou.android", "kugouurl://"], ["kw", "cn.kuwo.player", "kuwo://"], ["nt", "com.netease.cloudmusic", "orpheus://"], ["xm", "fm.xiami.main", "xiami://"]].forEach(function (e, i) {
                    M.checkInstall(function (t) {
                        a[i + 1] = (1 == t ? "i" : "u") + e[0], a[1] && a[2] && a[3] && a[4] && S("check." + a.join("_"))
                    }, e[1], e[2])
                })
            })
        }, 3e3), $.browser.music || 1 != M.getParam("openinqqmusic") || g()
    }

    y.done("setData", {list: h, index: v}).done("ready", function (t) {
        t && t.list ? (h = t.list, v = t.index, e(!0)) : e()
    })
}(window, document, window.QMPLAYER);</script>

</body>
</html>